package com.zp.self.module.level_4_算法练习.数学.位运算;

/**
 * @author By ZengPeng
 */
public class 力扣_191_位1的个数 {
    //测试
    public static void main(String[] args) {
        Boolean a = false;
        boolean b = true;
        a=Boolean.valueOf(String.valueOf(0));
        System.out.println(a);
        System.out.println(new 力扣_191_位1的个数().hammingWeight(-3));
    }

    /**
     * 题目：编写一个函数，输入是一个无符号整数（以二进制串的形式），
     * 返回其二进制表达式中数字位数为 '1' 的个数（也被称为汉明重量）。
     *
     *示例 1：
     * 输入：00000000000000000000000000001011
     * 输出：3
     * 解释：输入的二进制串 00000000000000000000000000001011 中，共有三位为 '1'。
     *
     * 分析：
     *      1.目标不断(n>>i&1)  ==1  count++   ,目标值不变，每次位移多一点
     *
     * 边界值注意：
     *      1.
     **/
    public int hammingWeight(int n) {
        int count =0;
        for (int i = 0; i < 32; i++)
            if((1&n>>i) ==1) count++;
        return count;
    }
}
